package com.zone.trigger.job;

import com.xxl.job.core.handler.annotation.XxlJob;
import com.zone.domain.acticity.model.valobj.ActivitySkuStockSubTaskVO;
import com.zone.domain.acticity.service.IActivitySkuStock;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.Objects;

/**
 * @author: zongzi
 * @description: 活动库存扣减定时任务
 * @date: 2025/2/16
 */
@Slf4j
@Component
public class ActivitySkuStockSubJob {
    @Autowired
    private IActivitySkuStock activitySkuStock;

    //    @Scheduled(cron = "0/5 * *  * * ? ")   //每5秒执行一次
    @XxlJob("ActivitySkuStockSubJob")
    public void execute() {
        // todo 从redis延迟队列中获取库存扣减任务，更新数据入库的时候执行失败，会导致数据库的库存未更新，从而引起“少卖”。
        try {
            ActivitySkuStockSubTaskVO skuStockSubTaskVO = activitySkuStock.pollAwardStockSubTask();
            if (Objects.isNull(skuStockSubTaskVO)) {
                return;
            }
            // 活动库存数量 - 1
            activitySkuStock.decrActivitySkuCountSurplus(skuStockSubTaskVO.getSku());
        } catch (Exception e) {
            log.warn("库存扣减定时器执行异常", e);
        }
    }
}
